package com.peng.sort;

/**
 * @Author sp
 * @Description
 * @create
 * @Modified By:
 */
public class BubbleSort {

  public static void main(String[] args) {
//    int [] arr= {3,9,-1,10,-2};
//    int temp = 0;
//    boolean flag = false;
//    for (int i = 0;i<arr.length-1;i++){
//      for (int j = 0;j<arr.length-1-i;j++){
//        if (arr[j] > arr[j+1]) {
//          temp = arr[j];
//          arr[j] = arr[j+1];
//          arr[j+1] = temp;
//          flag = true;
//        }
//        if (flag){
//          break;
//        }else {
//          flag = false;
//        }
//        }
//      }

      bubbleSort2();
    }


    public static void bubbleSort2() {
        int[ ] array = {3,9,-1,10,-2};
        int position = array.length - 1;
        /*外循环为排序趟数，array.length个数进行array.length-1趟 */
        for(int i = 0;i<array.length-1;i++){
            boolean isSwap = false;
            /*用来记录最后一次交换的位置*/
            int newPosition = 0;
            /*内循环为每趟比较的次数，第i趟比较array.length-i次 */
            for(int j = 0;j<position;j++){
                /*相邻元素比较，若满足条件则交换（升序为左大于右，降序反之） */
                if(array[j]>array[j+1]){
                    int temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                    isSwap = true;
                    /*记录最后一次交换的位置*/
                    newPosition = j;
                }
                /*查看每趟比较后的数组元素*/
                System.out.println("第 "+(i+1)+" 趟，第 "+(j+1)+" 次比较后的结果：");
                for (int value : array) {
                    System.out.print(value + " ");
                }
                System.out.println();
            }
            /*如果没有交换过元素，则已经有序，不再进行接下来的比较*/
            if(!isSwap){
                break;
            }
            /*下趟比较所需要比较到的位置*/
            position = newPosition;
        }

    }

   }


